home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / seyon / MultiListP.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  7KB  |  195 lines

  1. /****************************************************************************
  2.  
  3.     MultiListP.h
  4.  
  5.     This file is the private header file for the MultiList widget, an
  6.     extension to the Athena List widget.
  7.  
  8.     This code is loosely based on the Athena List source which
  9.     is why the MIT copyright notice appears below.
  10.  
  11.     The code was changed substantially in V3.4 to change the
  12.     action/callback interface which was unnecessarily ugly.  Code
  13.     using some features of the old interface may need to be changed.
  14.     Hope the changes don't make people's lives too miserable.
  15.  
  16.  ****************************************************************************/
  17.  
  18. /*
  19.  * Author:
  20.  *     Brian Totty
  21.  *     Department of Computer Science
  22.  *     University Of Illinois at Urbana-Champaign
  23.  *    1304 West Springfield Avenue
  24.  *     Urbana, IL 61801
  25.  * 
  26.  *     totty@cs.uiuc.edu
  27.  *     
  28.  */ 
  29.  
  30. /*
  31.  * Copyright 1989 Massachusetts Institute of Technology
  32.  *
  33.  * Permission to use, copy, modify, distribute, and sell this software and its
  34.  * documentation for any purpose is hereby granted without fee, provided that
  35.  * the above copyright notice appear in all copies and that both that
  36.  * copyright notice and this permission notice appear in supporting
  37.  * documentation, and that the name of M.I.T. not be used in advertising or
  38.  * publicity pertaining to distribution of the software without specific,
  39.  * written prior permission.  M.I.T. makes no representations about the
  40.  * suitability of this software for any purpose.  It is provided "as is"
  41.  * without express or implied warranty.
  42.  *
  43.  * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
  44.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
  45.  * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  46.  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  47.  * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
  48.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  49.  *
  50.  * Original Athena Author:  Chris D. Peterson, MIT X Consortium
  51.  */
  52.  
  53. #ifndef _MULTILISTP_H_
  54. #define _MULTILISTP_H_
  55.  
  56. #include <X11/Xaw/SimpleP.h>
  57. #include "MultiList.h"
  58.  
  59. /*---------------------------------------------------------------------------*
  60.  
  61.       L O C A L    D A T A    S T R U C T U R E    D E F I N I T I O N S
  62.  
  63.  *---------------------------------------------------------------------------*/
  64.  
  65. typedef    struct
  66. {
  67.     Boolean        sensitive;
  68.     Boolean        highlighted;
  69.     String        string;
  70. } XfwfMultiListItem;
  71.  
  72. /*---------------------------------------------------------------------------*
  73.  
  74.      W I D G E T    D A T A    S T R U C T U R E    D E F I N I T I O N S
  75.  
  76.  *---------------------------------------------------------------------------*/
  77.  
  78. typedef struct
  79. {
  80.     int        foo;
  81. } XfwfMultiListClassPart;
  82.  
  83. typedef struct _XfwfMultiListClassRec
  84. {
  85.     CoreClassPart        core_class;
  86.     SimpleClassPart        simple_class;
  87.     XfwfMultiListClassPart    multiList_class;
  88. } XfwfMultiListClassRec;
  89.  
  90. extern XfwfMultiListClassRec xfwfMultiListClassRec;
  91.  
  92. typedef struct
  93. {
  94.     Pixel            foreground;
  95.     Pixel            highlight_fg;
  96.     Pixel            highlight_bg;
  97.     Dimension        column_space;
  98.     Dimension        row_space;
  99.     int            default_cols;
  100.     Boolean            force_cols;
  101.     Boolean            paste;
  102.     Boolean            row_major;
  103.     int            longest;
  104.     int            nitems;
  105.     XFontStruct        *font;
  106.     String            *list;
  107.     Boolean            *sensitive_array;
  108.     XtCallbackList      callback;
  109.     int            max_selectable;
  110.     Boolean            shade_surplus;
  111.     Dimension        col_width;
  112.     Dimension        row_height;
  113.  
  114.     int            right_padding;
  115.     int            bottom_padding;
  116.     int            nrows;
  117.     int            ncols;
  118.     int            most_recent_clicked_item;
  119.     int            most_recent_action;
  120.     GC            erase_gc;
  121.     GC            draw_gc;
  122.     GC            highlight_bg_gc;
  123.     GC            highlight_fg_gc;
  124.     GC            gray_gc;
  125.     XfwfMultiListItem    *item_array;
  126.     int            num_selected;
  127.     int            *sel_array;
  128. } XfwfMultiListPart;
  129.  
  130. typedef struct _XfwfMultiListRec
  131. {
  132.     CorePart        core;
  133.     SimplePart        simple;
  134.     XfwfMultiListPart    multiList;
  135. } XfwfMultiListRec;
  136.  
  137. /*---------------------------------------------------------------------------*
  138.  
  139.           D A T A    S T R U C T U R E    A C C E S S    M A C R O S
  140.  
  141.  *---------------------------------------------------------------------------*/
  142.  
  143. #define    MultiListItemSensitive(i)    ((i)->sensitive)
  144. #define    MultiListItemHighlighted(i)    ((i)->highlighted)
  145. #define    MultiListItemString(i)        ((i)->string)
  146.  
  147. #define    InstanceCore(w)            (&((w)->core))
  148. #define    InstanceSimple(w)        (&((w)->simple))
  149. #define    InstanceMultiList(w)        (&((w)->multiList))
  150.  
  151. #define    MultiListWidth(w)        (InstanceCore(w)->width)
  152. #define    MultiListHeight(w)        (InstanceCore(w)->height)
  153. #define    MultiListBG(w)            (InstanceCore(w)->background_pixel)
  154. #define    MultiListSensitive(w)        (InstanceCore(w)->sensitive)
  155. #define    MultiListAncesSensitive(w)    (InstanceCore(w)->ancestor_sensitive)
  156. #define    MultiListDepth(w)        (InstanceCore(w)->depth)
  157.  
  158. #define    MultiListFG(w)            (InstanceMultiList(w)->foreground)
  159. #define    MultiListHighlightFG(w)        (InstanceMultiList(w)->highlight_fg)
  160. #define    MultiListHighlightBG(w)        (InstanceMultiList(w)->highlight_bg)
  161. #define    MultiListColumnSpace(w)        (InstanceMultiList(w)->column_space)
  162. #define    MultiListRowSpace(w)        (InstanceMultiList(w)->row_space)
  163. #define    MultiListDefaultCols(w)        (InstanceMultiList(w)->default_cols)
  164. #define    MultiListForceCols(w)        (InstanceMultiList(w)->default_cols)
  165. #define    MultiListPaste(w)        (InstanceMultiList(w)->paste)
  166. #define    MultiListRowMajor(w)        (InstanceMultiList(w)->row_major)
  167. #define    MultiListLongest(w)        (InstanceMultiList(w)->longest)
  168. #define    MultiListNumItems(w)        (InstanceMultiList(w)->nitems)
  169. #define    MultiListFont(w)        (InstanceMultiList(w)->font)
  170. #define    MultiListList(w)        (InstanceMultiList(w)->list)
  171. #define    MultiListSensitiveArray(w)    (InstanceMultiList(w)->sensitive_array)
  172. #define    MultiListCallback(w)        (InstanceMultiList(w)->callback)
  173. #define    MultiListMaxSelectable(w)    (InstanceMultiList(w)->max_selectable)
  174. #define    MultiListShadeSurplus(w)    (InstanceMultiList(w)->shade_surplus)
  175.  
  176. #define    MultiListColWidth(w)        (InstanceMultiList(w)->col_width)
  177. #define    MultiListRowHeight(w)        (InstanceMultiList(w)->row_height)
  178. #define    MultiListRightPadding(w)    (InstanceMultiList(w)->right_padding)
  179. #define    MultiListBottomPadding(w)    (InstanceMultiList(w)->bottom_padding)
  180. #define    MultiListNumRows(w)        (InstanceMultiList(w)->nrows)
  181. #define    MultiListNumCols(w)        (InstanceMultiList(w)->ncols)
  182. #define    MultiListMostRecentItem(w)    (InstanceMultiList(w)->most_recent_clicked_item)
  183. #define    MultiListMostRecentAct(w)    (InstanceMultiList(w)->most_recent_action)
  184. #define    MultiListEraseGC(w)        (InstanceMultiList(w)->erase_gc)
  185. #define    MultiListDrawGC(w)        (InstanceMultiList(w)->draw_gc)
  186. #define    MultiListHighlightForeGC(w)    (InstanceMultiList(w)->highlight_fg_gc)
  187. #define    MultiListHighlightBackGC(w)    (InstanceMultiList(w)->highlight_bg_gc)
  188. #define    MultiListGrayGC(w)        (InstanceMultiList(w)->gray_gc)
  189. #define    MultiListItemArray(w)        (InstanceMultiList(w)->item_array)
  190. #define    MultiListNthItem(w,n)        (&(MultiListItemArray(w)[n]))
  191. #define    MultiListSelArray(w)        (InstanceMultiList(w)->sel_array)
  192. #define    MultiListNumSelected(w)        (InstanceMultiList(w)->num_selected)
  193.  
  194. #endif
  195.